diff --git a/system/database/DB.php b/system/database/DB.php
index 6223744..a148c9f 100644
--- a/system/database/DB.php
+++ b/system/database/DB.php
@@ -22,14 +22,8 @@
  * @author		Rick Ellis
  * @link		http://www.codeigniter.com/user_guide/database/
  */
-function DB($params = '', $return = FALSE, $active_record = FALSE)
+function DB($params = '', $active_record = FALSE)
 {
-	// Do we even need to load the database class?
-	if (class_exists('CI_DB') AND $return == FALSE AND $active_record == FALSE)
-	{
-		return FALSE;
-	}
-
 	// Load the DB config file if a DSN string wasn't passed
 	if (is_string($params) AND strpos($params, '://') === FALSE)
 	{
@@ -84,15 +78,8 @@
 
 	// Instantiate the DB adapter
 	$driver = 'CI_DB_'.$params['dbdriver'].'_driver';
-	$DB = new $driver($params);
-	
-	if ($return === TRUE)
-	{
-		return $DB;
-	}
-
-	$CI =& get_instance();	
-	$CI->db =& $DB;
+	$DB = new $driver($params);	
+	return $DB;
 }	
 
 
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index a4131fd..848d4f1 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -155,26 +155,7 @@
 			}	
 		}
 	}
-	
-	// --------------------------------------------------------------------
-
-	/**
-	 * Load the Utilities Class
-	 *
-	 * @access	public
-	 * @return	string		 
-	 */		
-	function load_utilities()
-	{			
-		require_once(BASEPATH.'database/DB_utility'.EXT);
-		require_once(BASEPATH.'database/drivers/'.$this->dbdriver.'/'.$this->dbdriver.'_utility'.EXT);
-		$class = 'CI_DB_'.$this->dbdriver.'_utility';
 		
-		$CI =& get_instance();
-		$CI->dbutil = new $class();
-		$CI->_ci_assign_to_models();
-	}
-	
 	// --------------------------------------------------------------------
 
 	/**
diff --git a/system/libraries/Controller.php b/system/libraries/Controller.php
index 88ab461..0bbc777 100644
--- a/system/libraries/Controller.php
+++ b/system/libraries/Controller.php
@@ -88,7 +88,7 @@
 			$this->_ci_autoloader();
 		}
 	}
-    
+	
 	// --------------------------------------------------------------------
 	
 	/**
diff --git a/system/libraries/Loader.php b/system/libraries/Loader.php
index 7a6637a..1f6a8bc 100644
--- a/system/libraries/Loader.php
+++ b/system/libraries/Loader.php
@@ -119,20 +119,10 @@
 			return;
 		}
 		
-		if ($this->_ci_is_instance())
+		$CI =& get_instance();
+		if (isset($CI->$name))
 		{
-			$CI =& get_instance();
-			if (isset($CI->$name))
-			{
-				show_error('The model name you are loading is the name of a resource that is already being used: '.$name);
-			}
-		}
-		else
-		{
-			if (isset($this->$name))
-			{
-				show_error('The model name you are loading is the name of a resource that is already being used: '.$name);
-			}
+			show_error('The model name you are loading is the name of a resource that is already being used: '.$name);
 		}
 	
 		$model = strtolower($model);
@@ -147,14 +137,7 @@
 			if ($db_conn === TRUE)
 				$db_conn = '';
 		
-			if ($this->_ci_is_instance())
-			{
-				$CI->load->database($db_conn, FALSE, TRUE);
-			}
-			else
-			{
-				$this->database($db_conn, FALSE, TRUE);
-			}
+			$CI->load->database($db_conn, FALSE, TRUE);
 		}
 	
 		if ( ! class_exists('Model'))
@@ -166,28 +149,12 @@
 
 		$model = ucfirst($model);
 				
-		if ($this->_ci_is_instance())
-		{
-			$CI->$name = new $model();	
-			foreach (get_object_vars($CI) as $key => $var)
-			{		
-				$CI->$name->$key =& $CI->$key;						
-			}			
-		}
-		else
-		{
-			$this->$name = new $model();
-			foreach (get_object_vars($this) as $key => $var)
-			{			
-				$this->$name->$key =& $this->$key;						
-			}			
-		}		
+		$CI->$name = new $model();
+		$CI->$name->_assign_libraries();
 		
-		$this->_ci_models[] = $name;
-		$this->_ci_assign_to_models();
+		$this->_ci_models[] = $name;	
 	}
-	
-	
+		
 	// --------------------------------------------------------------------
 	
 	/**
@@ -201,19 +168,49 @@
 	 */	
 	function database($params = '', $return = FALSE, $active_record = FALSE)
 	{
+		// Do we even need to load the database class?
+		if (class_exists('CI_DB') AND $return == FALSE AND $active_record == FALSE)
+		{
+			return FALSE;
+		}	
+	
 		require_once(BASEPATH.'database/DB'.EXT);
 
 		if ($return === TRUE)
 		{
-			return DB($params, $return, $active_record);
+			return DB($params, $active_record);
 		}
-		else
-		{
-			DB($params, $return, $active_record);			
-			$this->_ci_assign_to_models();			
-		}
+
+		$CI =& get_instance();
+		$CI->db =& DB($params, $active_record);			
+		$this->_ci_assign_to_models();
 	}
+	
+	// --------------------------------------------------------------------
+
+	/**
+	 * Load the Utilities Class
+	 *
+	 * @access	public
+	 * @return	string		 
+	 */		
+	function dbutil()
+	{
+		if ( ! class_exists('CI_DB'))
+		{
+			$this->database();
+		}
 		
+		$CI =& get_instance();
+	
+		require_once(BASEPATH.'database/DB_utility'.EXT);
+		require_once(BASEPATH.'database/drivers/'.$CI->db->dbdriver.'/'.$CI->db->dbdriver.'_utility'.EXT);
+		$class = 'CI_DB_'.$CI->db->dbdriver.'_utility';
+
+		$CI->dbutil = new $class();
+		$CI->load->_ci_assign_to_models();
+	}
+	
 	// --------------------------------------------------------------------
 	
 	/**
@@ -467,15 +464,8 @@
 	 */
 	function language($file = '', $lang = '', $return = FALSE)
 	{
-		if ($this->_ci_is_instance())
-		{
-			$CI =& get_instance();
-			return $CI->lang->load($file, $lang, $return);
-		}
-		else
-		{
-			return $this->lang->load($file, $lang, $return);
-		}
+		$CI =& get_instance();
+		return $CI->lang->load($file, $lang, $return);
 	}
 	
 	// --------------------------------------------------------------------
@@ -489,15 +479,8 @@
 	 */
 	function config($file = '')
 	{		
-		if ($this->_ci_is_instance())
-		{
-			$CI =& get_instance();
-			$CI->config->load($file);
-		}
-		else
-		{
-			$this->config->load($file);
-		}
+		$CI =& get_instance();
+		$CI->config->load($file);
 	}
 
 	// --------------------------------------------------------------------
@@ -524,17 +507,9 @@
 			show_error('You must include the name of the table you would like access when you initialize scaffolding');
 		}
 		
-		if ($this->_ci_is_instance())
-		{
-			$CI =& get_instance();
-			$CI->_ci_scaffolding = TRUE;
-			$CI->_ci_scaff_table = $table;
-		}
-		else
-		{
-			$this->_ci_scaffolding = TRUE;
-			$this->_ci_scaff_table = $table;
-		}
+		$CI =& get_instance();
+		$CI->_ci_scaffolding = TRUE;
+		$CI->_ci_scaff_table = $table;
 	}
 
 	// --------------------------------------------------------------------
@@ -755,29 +730,15 @@
 		}
 		
 		// Instantiate the class		
-		if ($this->_ci_is_instance())
+		$CI =& get_instance();
+		if ($config !== NULL)
 		{
-			$CI =& get_instance();
-			if ($config !== NULL)
-			{
-				$CI->$classvar = new $name($config);
-			}
-			else
-			{		
-				$CI->$classvar = new $name;
-			}	
+			$CI->$classvar = new $name($config);
 		}
 		else
-		{
-			if ($config !== NULL)
-			{
-				$this->$classvar = new $name($config);
-			}
-			else
-			{		
-				$this->$classvar = new $name;
-			}	
-		}
+		{		
+			$CI->$classvar = new $name;
+		}	
 	} 	
 	
 	// --------------------------------------------------------------------
@@ -804,20 +765,10 @@
 		// Load any custome config file
 		if (count($autoload['config']) > 0)
 		{			
-			if ($this->_ci_is_instance())
+			$CI =& get_instance();
+			foreach ($autoload['config'] as $key => $val)
 			{
-				$CI =& get_instance();
-				foreach ($autoload['config'] as $key => $val)
-				{
-					$CI->config->load($val);
-				}
-			}
-			else
-			{
-				foreach ($autoload['config'] as $key => $val)
-				{
-					$this->config->load($val);
-				}			
+				$CI->config->load($val);
 			}
 		}		
 
@@ -893,14 +844,14 @@
 			$CI =& get_instance();
 			foreach ($this->_ci_models as $model)
 			{			
-				$CI->$model->_assign_libraries();			
+				$CI->$model->_assign_libraries();
 			}
 		}
 		else
-		{
+		{		
 			foreach ($this->_ci_models as $model)
 			{			
-				$this->$model->_assign_libraries();			
+				$this->$model->_assign_libraries();
 			}
 		}
 	}  	
diff --git a/system/libraries/Model.php b/system/libraries/Model.php
index 48615e0..017a9c6 100644
--- a/system/libraries/Model.php
+++ b/system/libraries/Model.php
@@ -33,10 +33,9 @@
 	 */
 	function Model()
 	{
-		$this->_assign_libraries(FALSE);
+		$this->_assign_libraries();
 		log_message('debug', "Model Class Initialized");
 	}
-	// END Model()
 
 	/**
 	 * Assign Libraries
@@ -47,26 +46,15 @@
 	 *
 	 * @access private
 	 */	
-	function _assign_libraries($use_reference = TRUE)
+	function _assign_libraries()
 	{
-		$CI =& get_instance();
-		foreach (get_object_vars($CI) as $key => $var)
-		{		
-			if ( ! isset($this->$key))
-			{
-				if ($use_reference === TRUE)
-				{
-					$this->$key =& $CI->$key;						
-				}
-				else
-				{
-					$this->$key = $CI->$key;
-				}
-			}
-		}
-
+		$CI =& get_instance();	
+		
+		foreach (array_keys(get_object_vars($CI)) as $key)
+		{
+			$this->$key =& $CI->$key;						
+		}		
 	}
-	// END _assign_libraries()
 
 }
 // END Model Class
